/****************************************************
	文件：ResDefine.cs
	作者：HuskyT
	邮箱：1005240602@qq.com
	日期：2020/12/20 18:30:23
	功能：资源加载模块的常量
*****************************************************/

using System;
using UnityEngine;
using HTFW.Utility;

namespace HTFW.Res
{
    public class ResDefine
    {
        //------------------------------  Res Prefix Path  ------------------------------//

        #region Res Prefix Path

        /// <summary>
        /// UI 预制体路径前缀（非预制体名部分）
        /// </summary>
        public const string PREFIX_PATH_UI_PREFAB = "";

        #endregion


        /// <summary>
        /// 资源加载模式 存储在 PlayerPrefs 上的 key 值
        /// </summary>
        public const string RES_LOAD_MODE_KEY = "Res Load Mode";
    }

    //------------------------------  Resource Type  ------------------------------//

    #region Resource Type

    /// <summary>
    /// 资源类型
    /// </summary>
    public enum ResourceType
    {
        None,

        /// <summary>
        /// UI 预制体
        /// </summary>
        UI_Prefab,
    }

    #endregion

    /// <summary>
    /// 资源加载任务优先级
    /// </summary>
    public enum ResTaskPriority
    {
        /// <summary>
        /// 不使用加载优先级（AssetBundle和Asset均会采用异步加载）
        /// [ --优点--：对帧数影响最小 ][ --缺点--：加载总时长最长(约为带优先级加载的一倍时长)，无优先级控制 ]
        /// </summary>
        None,

        /// <summary>
        /// 低优先级（Assetbundle使用同步加载，Asset使用异步加载）
        /// [ --优点--：对帧数影响较小，有优先级控制 ][ --缺点--：加载总时长较长(约为立即加载的五倍时长) ]
        /// </summary>
        Low,

        /// <summary>
        /// 中优先级（Assetbundle使用同步加载，Asset使用异步加载）
        /// [ --优点--：对帧数影响较小，有优先级控制 ][ --缺点--：加载总时长较长(约为立即加载的五倍时长) ]
        /// </summary>
        Mid,

        /// <summary>
        /// 高优先级（Assetbundle使用同步加载，Asset使用异步加载）
        /// [ --优点--：对帧数影响较小，有优先级控制 ][ --缺点--：加载总时长较长(约为立即加载的五倍时长) ]
        /// </summary>
        High,

        /// <summary>
        /// 立即加载（切换为同步加载）
        /// [ --优点--：加载总时长最短 ][ --缺点--：会引起线程阻塞，对帧数影响大 ]
        /// </summary>
        Immediately, //立即加载
    }

    /// <summary>
    /// 资源类型
    /// </summary>
    public enum ResType
    {
        None,
        AssetBundle,
        Asset,
    }

    /// <summary>
    /// 资源加载状态
    /// </summary>
    public enum ResLoadState
    {
        /// <summary>
        /// 资源未加载
        /// </summary>
        None,

        /// <summary>
        /// 资源正在加载
        /// </summary>
        Loading,

        /// <summary>
        /// 资源已经加载完成
        /// </summary>
        Loaded,
    }
}